package com.bjpowernode.javase.exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/*
    关于try..catch中的finally子句：
        1、在finally子句中的代码是最后执行的，并且一定会执行，即使try语句块中的代码出现了异常
            finally子句必须和try一起出现，不能单独编写
        2、finally语句通常使用在哪些情况？
            通常在finally语句块中完成资源的释放，因为finally中的代码比较有保障
        3、即使在try语句中有return，还是会执行finally子句，但JVM退出，finally子句就不会执行


 */
public class ExceptionTest04 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("F:\\course\\原理图\\Exception\\UML.png");

            String s = null;
            s.toString();
            System.out.println("我");
            //流使用完需要关闭
            //不过放在这里，有可能关不了，所以要放到finally子句中去
            //fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        } catch (NullPointerException e){
            e.printStackTrace();
        } finally {
            if (fis != null){
                try {
                    fis.close();
                    System.out.println("是");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("王强");
    }
}
